package types

type BlockPack struct {
	Blockstring     string
	Height          int64
	Chain_id        string       `json:"chain_id"`
	ProposalBlock   *Block       `json:"pb"`
	DeliverResponse []byte       `json:"dr"`
	ValidatorUpdate []*Validator `json:"vu"`
}

// func (bp *BlockPack) ToProto() *tmproto.BlockPack {
// 	vu := make([]*tmproto.Validator, 0, len(bp.ValidatorUpdate))
// 	for _, v := range bp.ValidatorUpdate {
// 		if protov, err := v.ToProto(); err != nil {
// 			panic(err)
// 		} else {
// 			vu = append(vu, protov)
// 		}
// 	}
// 	return &tmproto.BlockPack{
// 		ChainId:         bp.Chain_id,
// 		BlockHash:       bp.ProposalBlock.Hash(),
// 		DeliverResponse: bp.DeliverResponse,
// 		ValidatorUpdate: vu,
// 	}
// }

// func (bp *BlockPack) Bytes() []byte {
// 	protob := bp.ToProto()
// 	bz, err := proto.Marshal(protob)
// 	if err != nil {
// 		panic(err)
// 	}
// 	return bz
// }

// func (bp *BlockPack) Hash() bytes.HexBytes {
// 	return merkle.HashFromByteSlices([][]byte{bp.Bytes()})
// }

// func NewBlockPackFromBytes(bz []byte) (*BlockPack, []byte, error) {
// 	bp := new(tmproto.BlockPack)
// 	if err := proto.Unmarshal(bz, bp); err != nil {
// 		return nil, nil, err
// 	}
// 	validator_update := make([]*Validator, 0, len(bp.ValidatorUpdate))
// 	for _, vu := range bp.ValidatorUpdate {
// 		val, err := ValidatorFromProto(vu)
// 		if err != nil {
// 			panic(err)
// 		}
// 		validator_update = append(validator_update, val)
// 	}
// 	return &BlockPack{
// 		Chain_id:        bp.ChainId,
// 		DeliverResponse: bp.DeliverResponse,
// 		ValidatorUpdate: validator_update,
// 	}, bp.BlockHash, nil
// }
